/**
 * 1.暴力解决
 * 先平方后排序。时间复杂度为O(nlogn)
 */
// function sortSquares(arr) {
//   // 定义一个新的数组接收
//   let newArr = [];
//   for (let i = 0; i < arr.length; i++) {
//     arr[i] *= arr[i];
//     newArr.push(arr[i]);
//   }
//   // JavaScript 的 sort() 方法默认会将元素转换为字符串并按 Unicode 码点顺序排序，而非按数值大小排
//   return newArr.sort((a, b) => a - b);
// }

/**
 * 2.双指针方法
 */
function sortSquares(arr) {
  let newArr = [];
  let k = arr.length - 1;
  // 左指针指向开头，右指针指向最后，比较哪个大，就将哪个推入新的数组
  // 如果符合条件的话，i++或者j--
  for (let i = 0, j = arr.length - 1; i <= j; ) {
    let squareLeft = arr[i] * arr[i];
    let squareright = arr[j] * arr[j];
    if (squareLeft > squareright) {
      newArr[k--] = squareLeft;
      i++;
    } else {
      newArr[k--] = squareright;
      j--;
    }
  }
  return newArr;
}

const arr = [-4, -1, 0, 3, 10];
const res = sortSquares(arr);
console.log(res);
